#ifndef ADMINISTRADOR_H_
#define ADMINISTRADOR_H_

#include "concurrencia/MemoriaCompartida.h"
#include "Utils.h"
#include "Auto.h"
#include "concurrencia/Semaforo.h"

using namespace std;

class Administrador {
private:
	MemoriaCompartida<int> cantidadAutos;
	Semaforo * cantidadAutosSem;
	Semaforo * dineroRecaudadaSem;
	MemoriaCompartida<double> dineroRecaudada;
	double precioPorHora;
	void operarSobreCantidadAutos(int valor);
	void sumarDinero(double valor);

public:
	Administrador(double precioPorHora);
	//Consulta cuanto dinero lleva recaudado.
	double consultarDineroRecaudado();
	//Modifica la cantidad de autos y cobra la plata por el tiempo estacionado a autoSaliendo.
	void sacarAuto(Auto * autoSaliendo);
	int consultarCantidadAutos();
	//Incrementa la catidad de autos en el estacionamiento.
	void entraAuto();
	void terminar();
	void liberarMemoria();
	virtual ~Administrador();
};

#endif
